﻿/**
 * \brief TCP任务连接池
 * \file CTcpTaskPool.h
 */

#ifndef __CTCP__TASK__POOL__H
#define __CTCP__TASK__POOL__H

#include "CThreadGroup.h"
#include "CSyncThread.h"
#include "CRecycleThread.h"

class CTcpTask;

template <class _ThreadPolicy>
class CThreadPattern;

class CTcpTaskPool
{
	public:
		CTcpTaskPool(size_t _maxVerifyThreadNum, size_t _maxRunningThreadNum);
		~CTcpTaskPool();

	public:
		/// 初始化
		bool init();
		/// 开启
		bool start();

	public:
		/// 加入验证线程
		bool addVerify(CTcpTask* _pTask);

		/// 加入同步线程
		bool addSync(CTcpTask* _pTask);

		/// 加入处理线程
		bool addRunning(CTcpTask* _pTask);

		/// 加入回收线程
		bool addRecycle(CTcpTask* _pTask);

	private:
		CThreadGroup _M_verifyThreads;				/// 验证线程组
		size_t _M_maxVerifyThreadNum;				/// 最大验证线程数量

		CThreadPattern<CSyncThread>* _M_pSyncThread;		/// 同步线程

		CThreadGroup _M_runningThreads;				/// 运行线程组
		size_t _M_maxRunningThreadNum;				/// 最大运行线程数量

		CThreadPattern<CRecycleThread>* _M_pRecycleThread;	/// 回收线程
};

#endif	/// __CTCP__TASK__POOL__H

